package lc.q101_150;

import java.util.HashMap;
import java.util.Map;

public class Q136 {

    public int singleNumber(int[] nums) {
        // hash，但是不符合空间复杂度
        Map<Integer, Integer> size = new HashMap<>();
        for (int num : nums) {
            size.put(num, size.getOrDefault(num, 0) + 1);
        }
        for (int num : nums) {
            if (size.get(num) == 1) {
                return num;
            }
        }
        return 0;
    }

    public int singleNumber2(int[] nums) {
        // 抑或，因为两个相等的亦或就是0，题意只有一个独立数字
        if (nums.length == 1) {
            return nums[0];
        }
        int num = nums[0];
        for (int i = 1; i < nums.length; i++) {
            num = num ^ nums[i];
        }
        return num;
    }

}
